home *** CD-ROM | disk | FTP | other *** search
/ Amiga Game-Power / Amiga Game-Power.iso / pd mix ii / access / hddriver / driver / hash.c < prev    next >
C/C++ Source or Header  |  1994-05-20  |  695b  |  51 lines

  1.  
  2. #include <exec/types.h>
  3.  
  4. #define SIZE(bits)    ((((bits)+31L)/32L)*4L)
  5.  
  6. extern APTR    AllocMem ();
  7.  
  8. ULONG *
  9. NewHashTable ( size )
  10. ULONG size;
  11. {
  12.     ULONG *table;
  13.  
  14.     table = (ULONG *) AllocMem ( SIZE ( size ) , (LONG)MEMF_CLEAR );
  15.     if ( table != NULL )
  16.         *table = size;
  17.     return ( table );
  18. }
  19.  
  20.  
  21. void
  22. FreeHashTable ( table )
  23. ULONG *table;
  24. {
  25.     FreeMem ( table , SIZE ( *table ) );
  26. }
  27.  
  28.  
  29. void
  30. AddHashTable ( table , num )
  31. ULONG *table;
  32. ULONG num;
  33. {
  34.     LONG bit;
  35.  
  36.     bit = num % *table + 32;
  37.     table[ bit >> 5L ] |= ( 1L << ( bit & 31L ) );
  38. }
  39.  
  40.  
  41. ULONG
  42. TestHashTable ( table , num )
  43. ULONG *table;
  44. ULONG num;
  45. {
  46.     LONG bit;
  47.  
  48.     bit = num % *table + 32;
  49.     return ( ( table[ bit >> 5L ] & ( 1L << ( bit & 31L ) ) ) ? 1 : 0 );
  50. }
  51.